/// 不可变借用保证了没有任何指针可以修改值的内存，便于将值存储在寄存器中 。
/// .可变借用保证了在写的时候没有任何指针可以读取值的内存，避免了脏读 。
/// ·不可变借用保证了内存不会在读取之后被写入新数据 。
/// ·保证了不可变借用和可变借用不相互依赖，从而可以对读写操作进行自由移动和重新排序。
/// 关于引用,还有一个值得注意的地方:解引用操作会获得所有权。
pub fn start() {
    let x = "Hello".to_string();
    println!("{}", join(&x));
}

fn join(s: &String) -> String {
    // cannot move out of borrowed content
    // let append = *s;
    let append = s;
    "Hello".to_string() + append
}
